#ifndef __LAMPE__Serializable_H__
#define __LAMPE__Serializable_H__

#include <lampe/stream/IWriter.h>
#include <lampe/stream/IReader.h>

namespace lampe{
namespace stream{

/***
 * @class Serializable
 * Является интерфейсом для сериализуемых и десериализуемых объектов
 * **/
class Serializable{
public:
    /***
     * Записывает все данные класса в поток
     *
     * @param stream поток, куда нужно записать все данные класса
     * **/
    virtual void serialization(lampe::stream::IWriter*stream)=0;

    /***
     * Считывает все данные из потока и записывает их в класс
     *
     * @param stream поток, откуда нужно считать данные
     * **/
    virtual void deserialization(lampe::stream::IReader*stream)=0;
};

}//namespace stream
}//namespace lampe
#endif
